package cn.itcast.mapper;

import cn.itcast.pojo.*;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;


public interface orderMapper {
    int countByExample(orderExample example);

    int deleteByExample(orderExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(order record);

    int insertSelective(order record);

    List<order> selectByExample(orderExample example);

    List<order> selectUserAccomplish(String openId);

    order selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") order record, @Param("example") orderExample example);

    int updateByExample(@Param("record") order record, @Param("example") orderExample example);

    int updateByPrimaryKeySelective(order record);

    int updateByPrimaryKey(order record);


    //顺丰快递取消
    int sfcancelmapp(sforder sforder);

    //查询一条最新下单
    sforder toponeidquerymapp(String openid);

    //询首页最新回收订单滚动
    List<order>toporder();

    int sfadd(sforder sforder);

    //opid查询顺丰下单
    List<sforder>listsfquery(String openid);


    //删除顺丰已取消订单
    int deletesfopenid(sforder sforder);

    //顺丰修改订单状态
    int updatesforder(sforder sforder);

    //顺丰修改重量运费清单
    int updatesffreight(sforder sforder);

    //顺丰路由推送修改快递到达
    int updateRoutepushmapp(sforder sforder);

    //根据骑手openid分组查询骑手已完成交易的所有订单
    List<order> selectPackageOrder(Map<String, Object> map);


    List<order>merchantmapp(String merchantopenid);

    //用户取消门店订单
    boolean cancelmerchaentmapp(String orderid);


    /**
     * 查询所有的订单
     * @param map
     * @return
     */
    List<order> getAllOrder(Map<String,Object> map);

    /**
     *
     * @Description:
     * 获取骑手今日货量总金额
     * @auther: 欧阳辉
     * @date: 8:37 2020/5/27
     * @param: [openId]
     * @return: double
     *
     */
    Double todayCount(Map<String, Object> map);

    /**
     *
     * @Description:
     *
     * @auther: 欧阳辉
     * @date: 11:19 2020/5/27
     * @param: [map]
     * @return: java.lang.Double
     *
     */
    Double orderTodayCount(Map<String, Object> map);

    /**
     *
     * @Description:
     *
     * @auther: 欧阳辉
     * @date: 11:19 2020/5/27
     * @param: [map]
     * @return: java.lang.Double
     *
     */
    Double orderTodayWeight(Map<String, Object> map);


    /**
     * 系统成交总重量
     * @return
     */
    Double getTotalWeight();

    /**
     * 系统成交总金额
     * @return
     */
    Double getTotalSum();

    /**
     * 用户下单次数分布
     * @return
     */
    List<order> getOrderCountDistribution();

    List<order> findOrderByState(Map<String,String> map);

    List<order> findOrderByStateProceed(String openId);


    /**
     * 回收区域重量分布，即每一个回收区域的总回收重量
     * @return
     */
    List<order> getWeightCountyDistribution();

    /**
     * 骑手的货量与金额
     * @return
     */
    List<horsemanWeightAndSum> getHorsemanWeightAndSum();

   /**
     *
     * @Description:  查看昨日下单情况
     *
     * @auther: 张松
     * @date: 11:43 2020/6/25
     * @param: []
     * @return: java.util.List<cn.itcast.pojo.order>
     *
     */
    List<order> getYesterdayOrder();

    /**
     *
     * @Description: 查看每日订单情况
     *
     * @auther: 张松
     * @date: 9:28 2020/7/18
     * @param: [intData]
     * @return: java.util.List<cn.itcast.pojo.order>
     *
     */
    List<order> getEveryDayOrder(Integer intData);


    order selectOrderNumber(String s);

    /**
     *
     * @Description: 查看推广伙伴的订单完成情况
     * 
     * @auther: 张松
     * @date: 17:04 2020/7/6
     * @param: []
     * @return: java.util.List<cn.itcast.pojo.order>
     *
     */
    List<order> selectPartnerOrder(List<String> partnerOpenid);


    /**
     *
     * @Description: 根据传输的条件查询订单
     *
     * @auther: 张松
     * @date: 15:31 2020/7/7
     * @param: [order]
     * @return: java.util.List<cn.itcast.pojo.order>
     *
     */
    List<order> selectStateAndNumberAndUserName(@Param("order") order order,@Param("partnerOpenid")List<String> partnerOpenid);



    /**
     * 功能描述: <br>
     * 〈根据openId,状态获取订单信息〉
     * @Author: lyy
     * @Date: 2020/7/29 8:57
     * @Param: [openId, Status]
     * @Return: java.util.List<cn.itcast.pojo.order>
     */
    List<order> selectOrderStatus(String openId,String Status);

    /**
     *
     * @Description: 根据骑手Id查找骑手正在进行中的订单
     *
     * @auther: 张松
     * @date: 16:17 2020/7/29
     * @param: [openId]
     * @return: java.util.List<cn.itcast.pojo.order>
     *
     */
    List<order> selectHorsemanInOrder(String openId);


    /**
     *
     * @Description: 根据骑手Id查找骑手已完成的订单
     *
     * @auther: 张松
     * @date: 16:17 2021/2/03
     * @param: [openId]
     * @return: java.util.List<cn.itcast.pojo.order>
     *
     */
    List<order> selectHorsemanStocksOrder(String openId);




    /**
     *
     * @Description: 根据订单状态查找订单
     *
     * @auther: 张松
     * @date: 10:57 2020/8/5
     * @param: [orderState]
     * @return: java.util.List<cn.itcast.pojo.order>
     *
     */
    List<order> findOrderAddress(String orderState);


    /**
     * 功能描述: <br>
     * 〈查看用户订单上一个接单的骑手名字〉
     * @Author: lyy
     * @Date: 2020/8/9 10:55
     * @Param: [openId]
     * @Return: java.lang.String
     */
    String userPreviousHorseman(String openId);


    List<order> selectHorsemanOrderId(Integer orderId);


    List<order> selectHorsemanReceiptMoney(String horsemanOpenId);

    sforder selectorderid(String orderid);

    //赠送环保金
    int updatemoney(account account);
    //查询账户总额
    account selemoneycount(account account);

    //新增快递收益
    int addearnings(earnings earnings);

    //商户端修改订单
    int updatemerchanttypemapp(String ordernumber,String payproducttype);

    //新增订单物品
    int updateordertype(order order);

    //修改订单状态
    int orderupdate(order order);




}